package com.luxsoft.siipap.em.replica.ui.tasks;

import javax.swing.JComponent;
import javax.swing.SwingWorker;

import com.jgoodies.forms.builder.ButtonBarBuilder;
import com.luxsoft.siipap.em.replica.importadores.compras.ImportadorDeProductos2;
import com.luxsoft.siipap.model.Periodo;
import com.luxsoft.siipap.util.DBUtils;

/**
 * Permite importar los precios de credito y contado desde
 * SIIPAP (DBF) 
 * 
 * @author Ruben Cancino
 *
 */
public class ImportadorDeProductosTask {

	public ImportadorDeProductosTask() {
		
	}
	
	public void execute(){		
		FacTaskDialog dialog=new FacTaskDialog();
		final SwingWorker worker=new Importador(dialog);
		dialog.registerWorker(worker);
		dialog.open();
		printResult();
	}
	
	protected void printResult(){
		
	}
	
	private class FacTaskDialog extends TaskDialog{
		
		protected Periodo periodo=Periodo.getPeriodoDelMesActual();
		
		public FacTaskDialog() {
			super("Actualizador de productos");
		}
		
		public void start(){
			progress.setIndeterminate(true);
			super.start();
		}
		
		protected JComponent buildButtonBar() {
			getHeader().setTitle("Actualizando productos");
			getHeader().setDescription("Precios de credito y contado");
			ButtonBarBuilder builder =new ButtonBarBuilder();
			builder.addGlue();
			
			builder.addUnrelatedGap();
			builder.addGridded(createStartButton(true));
			builder.addRelatedGap();
			builder.addGridded(createStopButton());
	        builder.addUnrelatedGap();
	        builder.addGridded(createDetailButton());
	        return builder.getPanel();        
		}
		
		
		
	}
	
	private class Importador extends SwingWorker<String,String>{
		
		private final FacTaskDialog dialog;
		
		public Importador(final FacTaskDialog dialog){
			this.dialog=dialog;
			dialog.getHeader().setTitle("Actualizando Productos (Precios)");
		}

		@Override
		protected String doInBackground() throws Exception {
			DBUtils.whereWeAre();
			try {
				
				ImportadorDeProductos2 imp=new ImportadorDeProductos2();
				imp.actualizaArticulos();
			} catch (Exception e) {
				e.printStackTrace();
			}finally{
				ImportadorDeProductos2.cloesDataSource();
			}
			return "OK";
		}
		

		@Override
		protected void done() {
			dialog.progress.setIndeterminate(false);
			super.done();
		}
		
	}
	
	public static void main(String[] args) {		
		new ImportadorDeProductosTask().execute();
	}

}
